package leetcode.code844;

public class Solution extends Solution844 {

	@Override
	public boolean backspaceCompare(String s, String t) {
		int lens = s.length();
		int lent = t.length();
		int sp = lens;
		int tp = lent;
		int sharps = 0;
		int sharpt = 0;
		while (sp >= 0 && tp >= 0) {// 做下去，直到一个做完
			char cs = '#';
			char ts = '#';
			sharps = 0;
			sharpt = 0;
			boolean jump = false;
			do {// S中取一个最右侧，最近一个没看过的字符
				jump = false;// 是否跳过这个字符，刚进来，认为不跳
				sp--;
				if (sp == -1) {// 最后一个字符当作' '
					cs = ' ';
					break;
				}
				cs = s.charAt(sp);
				if (cs == '#') {
					sharps++;// #数量+1
					jump = true;// #跳过
				} else {
					if (sharps > 0) {
						jump = true;
						sharps--;
					}
				}
			} while (jump);
			do {// T中取一个最右侧，最近一个没看过的字符（同S块代码）
				jump = false;// 刚进来，认为不跳
				tp--;
				if (tp == -1) {
					ts = ' ';
					break;
				}
				ts = t.charAt(tp);
				if (ts == '#') {
					sharpt++;
					jump = true;// #跳过
				} else {
					if (sharpt > 0) {
						jump = true;
						sharpt--;
					}
				}
			} while (jump);
			if (cs != ts)
				return false;
		}
		while (sp > 0) {// sp长了，看看后边是什么
			if (s.charAt(sp) == '#') {
				sharps++;
			} else {
				if (sharps > 0)
					sharps--;
				else {
					return false;// 多出来一个消除不掉的字符，错了
				}
			}
			sp--;
		}
		while (tp > 0) {// tp长了，看看后边是什么，同sp块代码类似
			if (t.charAt(tp) == '#') {
				sharpt++;
			} else {
				if (sharpt > 0)
					sharpt--;
				else {
					return false;
				}
			}
			tp--;
		}
		return true;
	}

	public static void main(String[] args) {
		Solution so = new Solution();
		so.debug1();
		so.debug2();
		so.debug3();
		so.debug4();
	}

}
